package misc

import (
    "dhfshop/models"
	"github.com/astaxie/beego/orm"
)

// 商户接口信息
type ApiInfo struct {
	PartnerId  int64   `orm:"column(partner_id);pk" json:"partner_id" form:"partner_id"` //商户编号
	ApiId      string  `orm:"column(api_id)" json:"api_id" form:"api_id"`                //商户接口编号(10位数字) 
	ApiSecret  string  `orm:"column(api_secret)" json:"api_secret" form:"api_secret"`    //密钥 
	WhiteList  string  `orm:"column(white_list)" json:"white_list" form:"white_list"`    //IP白名单 
    NotifyUrl  string  `orm:"column(notify_url)" json:"notify_url" form:"notify_url"`    //消息推送地址 
	Enabled    int     `orm:"column(enabled)" json:"enabled" form:"enabled"`             //是否启用,0:停用,1启用
}

func init() {
    orm.RegisterModel(new(ApiInfo))   
}

func ApiInfoExist(partnerId int64, apiId string) (err error) {
	o := models.GetDefaultDB()
	if exist := o.QueryTable(new(ApiInfo)).Filter("partner_id", partnerId).Filter("api_id", apiId).Exist(); !exist {
	    m := &ApiInfo{PartnerId:partnerId, ApiId:apiId}
		_, err = o.Insert(m)
	}
	return
}

// 获取API信息
func GetApiInfo(partnerId int64) (api *ApiInfo, err error) {
	o := models.GetDefaultDB()
	api = &ApiInfo{}
	err = o.QueryTable(new(ApiInfo)).Filter("partner_id", partnerId).One(api)
	return
}

// 根据API编号获取商户编号
func GetPartnerIdByApiId(apiId string) int {
	var id int
	orm.NewOrm().QueryTable(new(ApiInfo)).Filter("api_id", apiId).One(&id)    //是否返回结构体？需要过滤后把id挑出来，返回？
	return id
}

// 更新API信息
func UpdateApiInfoByPartnerId(m *ApiInfo, fields ...string) error {
	o := models.GetDefaultDB()
	v := ApiInfo{PartnerId: m.PartnerId}
	if err := o.Read(&v, "PartnerId"); err == nil {
		m.PartnerId = v.PartnerId
	    if _, err = o.Update(m, fields...); err != nil {
		    return err
		}
	}else{
	    return err
	}
	return nil
}


